সি প্রোগ্রামিং ভাষায় লোকালাইজেশন ফাংশনগুলো ব্যবহার করে প্রোগ্রামকে বিভিন্ন ভাষা, তারিখ, সময়, মুদ্রা এবং অন্যান্য সংস্কৃতিভিত্তিক সেটিংস অনুযায়ী উপযোগী করা যায়। লোকালাইজেশন ফাংশনগুলো locale.h
হেডার ফাইলে সংরক্ষিত থাকে এবং এগুলো ব্যবহার করে প্রোগ্রামটিকে নির্দিষ্ট অঞ্চলের ভাষা ও সংস্কৃতির সঙ্গে মানানসই করে তোলা সম্ভব।
নিচে লোকালাইজেশন ফাংশনের কিছু গুরুত্বপূর্ণ দিক এবং সেগুলোর কাজ সম্পর্কে বিস্তারিত আলোচনা করা হলো।
setlocale()
– লোকেল সেট করাsetlocale()
ফাংশনটি একটি নির্দিষ্ট লোকেল সেট করতে ব্যবহৃত হয়। এটি নির্দিষ্ট লোকেলের ভাষা এবং অঞ্চল অনুসারে ইনপুট ও আউটপুট ফরম্যাট, যেমন তারিখ, সময় এবং মুদ্রার বিন্যাস নির্ধারণ করে।
char *setlocale(int category, const char *locale);
category
: লোকেল সেটিংয়ের ধরন নির্দেশ করে। যেমন LC_ALL
, LC_TIME
, LC_MONETARY
, **LC_NUMERIC
**।locale
: নির্দিষ্ট লোকেল স্ট্রিং যেমন "en_US"
, "fr_FR"
ইত্যাদি। "C"
বা ""
ডিফল্ট লোকেল নির্দেশ করে।#include <stdio.h>
#include <locale.h>
int main() {
// সমস্ত লোকেল সেট করা
setlocale(LC_ALL, "en_US.UTF-8");
printf("Locale set to: %s\n", setlocale(LC_ALL, NULL));
return 0;
}
Output:Locale set to: en_US.UTF-8
Note: যদি লোকেলটি সফলভাবে সেট করা হয়, তবে এটি লোকেলের নাম রিটার্ন করে; অন্যথায়, এটি NULL রিটার্ন করে।
localeconv()
– লোকেল কনভেনশনস (Locale Conventions)localeconv()
ফাংশনটি লোকেল-নির্দিষ্ট কনভেনশন যেমন দশমিক বিন্দু, হাজার বিভাজক এবং মুদ্রা সংক্রান্ত তথ্য প্রদান করে। এটি একটি lconv
স্ট্রাকচার রিটার্ন করে, যা লোকেল-নির্দিষ্ট তথ্য ধারণ করে।
struct lconv *localeconv(void);
lconv
স্ট্রাকচার: এটি লোকেলের বিভিন্ন কনভেনশন সংরক্ষণ করে, যেমন decimal_point (দশমিক বিন্দু), thousands_sep (হাজার বিভাজক), এবং মুদ্রা সম্পর্কিত বৈশিষ্ট্যগুলো।
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_ALL, "en_US.UTF-8");
struct lconv *lc = localeconv();
printf("Decimal Point: %s\n", lc->decimal_point);
printf("Thousands Separator: %s\n", lc->thousands_sep);
printf("Currency Symbol: %s\n", lc->currency_symbol);
return 0;
}
Output:
Decimal Point: .
Thousands Separator: ,
Currency Symbol: $
Note:
localeconv()
ব্যবহার করার পূর্বেsetlocale()
ফাংশন ব্যবহার করে লোকেল সেট করা উচিত।
লোকেল সেট করতে বিভিন্ন ক্যাটেগরি ব্যবহার করা হয়। কিছু গুরুত্বপূর্ণ ক্যাটেগরি নিচে উল্লেখ করা হলো:
LC_ALL
: সমস্ত লোকেল সেটিং পরিবর্তন করে।LC_NUMERIC
: সংখ্যা ফরম্যাট সেটিং পরিবর্তন করে।LC_TIME
: সময় এবং তারিখ ফরম্যাট সেটিং পরিবর্তন করে।LC_MONETARY
: মুদ্রা সম্পর্কিত সেটিং পরিবর্তন করে।LC_COLLATE
: স্ট্রিং তুলনার সেটিং পরিবর্তন করে।LC_CTYPE
: ক্যারেক্টার টাইপিং সেটিং পরিবর্তন করে (যেমন বড় হাতের অক্ষর, ছোট হাতের অক্ষর)।#include <stdio.h>
#include <locale.h>
int main() {
// শুধুমাত্র LC_TIME ক্যাটেগরি সেট করা
setlocale(LC_TIME, "fr_FR.UTF-8");
printf("Locale for LC_TIME set to: %s\n", setlocale(LC_TIME, NULL));
return 0;
}
struct lconv
এর গুরুত্বপূর্ণ ফিল্ডসমূহফিল্ড | বর্ণনা |
---|---|
decimal_point | দশমিক বিন্দু (Decimal Point) |
thousands_sep | হাজার বিভাজক (Thousands Separator) |
currency_symbol | মুদ্রা চিহ্ন (Currency Symbol) |
mon_decimal_point | মুদ্রার দশমিক বিন্দু |
mon_thousands_sep | মুদ্রার হাজার বিভাজক |
positive_sign | পজিটিভ সংখ্যা চিহ্ন |
negative_sign | নেগেটিভ সংখ্যা চিহ্ন |
int_curr_symbol | আন্তর্জাতিক মুদ্রা চিহ্ন |
ফাংশন | কাজ |
---|---|
setlocale() | নির্দিষ্ট লোকেল সেট করে |
localeconv() | লোকেল-নির্দিষ্ট কনভেনশন প্রদান করে |
১. আন্তর্জাতিকীকরণ সহজতর করা: লোকালাইজেশন ফাংশন প্রোগ্রামকে বিভিন্ন ভাষা এবং অঞ্চলে ব্যবহারযোগ্য করে।
২. ইউজার ফ্রেন্ডলি: ব্যবহারকারীদের স্থানীয় ভাষায় আউটপুট প্রদর্শন করে।
৩. সংস্কৃতির সঙ্গে মানানসই: নির্দিষ্ট সংস্কৃতিভিত্তিক সেটিংস অনুযায়ী ডেটা প্রদর্শনের মাধ্যমে ব্যবহারকারীর অভিজ্ঞতা বাড়ায়।
সি প্রোগ্রামে লোকালাইজেশন ফাংশন ব্যবহার করে সহজেই আন্তর্জাতিকীকরণ এবং বিভিন্ন ভাষায় ডেটা প্রদর্শন সম্ভব। setlocale()
এবং localeconv()
ফাংশন প্রোগ্রামের ভাষা, তারিখ, সময়, এবং মুদ্রার ফরম্যাটকে নির্দিষ্ট লোকেল অনুযায়ী উপযোগী করে তোলে, যা প্রোগ্রামকে বৈশ্বিকভাবে ব্যবহারযোগ্য করে।
locale.h
এবং তার ব্যবহারlocale.h
হেডার ফাইলটি সি প্রোগ্রামিং ভাষায় লোকেল (Locale) সেটিংস ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। লোকেল হলো এমন একটি পদ্ধতি যা বিভিন্ন দেশের ভাষা, মুদ্রা, সময়, সংখ্যা বিন্যাস ইত্যাদি সঠিকভাবে প্রয়োগ করতে সাহায্য করে। লোকেল ব্যবহার করে প্রোগ্রামকে বিভিন্ন ভাষা ও সংস্কৃতির জন্য উপযোগী করা যায়।
লোকেল সেটিংসের মাধ্যমে প্রোগ্রামটি নির্ধারণ করতে পারে যে কীভাবে বিভিন্ন ভাষায় সংখ্যার বিন্যাস, মুদ্রার সিম্বল, ডেট এবং সময়ের ফরম্যাট, অথবা পাঠ্য পরিমাপ করা হবে।
locale.h
এর ফাংশনসমূহlocale.h
এর কিছু গুরুত্বপূর্ণ ফাংশন এবং কনস্ট্যান্ট নিয়ে নিচে আলোচনা করা হলো।
setlocale()
– লোকেল সেট করাsetlocale()
ফাংশনটি ব্যবহার করে প্রোগ্রামে লোকেল সেট করা যায়। এটি প্রোগ্রামের জন্য নির্দিষ্ট ক্যাটেগরির লোকেল সেট করে, যেমন সংখ্যা বিন্যাস, মুদ্রা, তারিখ ইত্যাদি।
সিঙ্কট্যাক্স:
char *setlocale(int category, const char *locale);
category
: কোন ধরনের লোকেল সেট করতে হবে তা নির্ধারণ করে। কিছু সাধারণ ক্যাটেগরি হলো:LC_ALL
: সব ক্যাটেগরির লোকেল সেট করে।LC_NUMERIC
: সংখ্যা বিন্যাসের লোকেল সেট করে।LC_TIME
: তারিখ এবং সময় বিন্যাসের লোকেল সেট করে।LC_MONETARY
: মুদ্রা বিন্যাসের লোকেল সেট করে।LC_COLLATE
: স্ট্রিং তুলনার লোকেল সেট করে।LC_CTYPE
: ক্যারেক্টার ক্লাসিফিকেশন এবং কনভার্শনের লোকেল সেট করে।locale
: লোকেলের নাম (যেমন "en_US"
, "fr_FR"
, ইত্যাদি)। "C"
বা "POSIX"
লোকেল মানে ডিফল্ট লোকেল। যদি NULL
পাস করা হয়, তাহলে বর্তমান লোকেল নাম রিটার্ন হয়।#include <stdio.h>
#include <locale.h>
int main() {
// LC_ALL ক্যাটেগরির জন্য "en_US.UTF-8" লোকেল সেট করা
setlocale(LC_ALL, "en_US.UTF-8");
printf("Locale set to English (United States).\n");
// বর্তমান লোকেল সেটিংস দেখানো
printf("Current locale: %s\n", setlocale(LC_ALL, NULL));
return 0;
}
localeconv()
– লোকেল কনভেনশন পেতেlocaleconv()
ফাংশনটি মুদ্রা এবং সংখ্যা বিন্যাস সম্পর্কিত লোকেল কনভেনশন পেতে ব্যবহৃত হয়। এটি একটি struct lconv
টাইপের পয়েন্টার রিটার্ন করে, যাতে মুদ্রা এবং সংখ্যা বিন্যাসের কনভেনশন সংরক্ষিত থাকে।
সিঙ্কট্যাক্স:
struct lconv *localeconv(void);
struct lconv
এর কিছু গুরুত্বপূর্ণ ফিল্ডসমূহ:
decimal_point
: দশমিক বিন্দুর সিম্বল।thousands_sep
: হাজার বিভাজকের সিম্বল।currency_symbol
: মুদ্রার সিম্বল।mon_decimal_point
: মুদ্রার দশমিক বিন্দু।mon_thousands_sep
: মুদ্রার হাজার বিভাজক।#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_ALL, "en_US.UTF-8"); // লোকেল সেট করা
struct lconv *lc = localeconv(); // লোকেল কনভেনশন পেতে
printf("Decimal point: %s\n", lc->decimal_point);
printf("Thousands separator: %s\n", lc->thousands_sep);
printf("Currency symbol: %s\n", lc->currency_symbol);
printf("Monetary decimal point: %s\n", lc->mon_decimal_point);
return 0;
}
setlocale()
এর ব্যবহারsetlocale()
ফাংশনটি নির্দিষ্ট ক্যাটেগরি অনুযায়ী লোকেল সেট করতে পারে, যেমন:
LC_NUMERIC – সংখ্যা বিন্যাস পরিবর্তন
setlocale(LC_NUMERIC, "fr_FR.UTF-8"); // ফ্রেঞ্চ সংখ্যা বিন্যাস
LC_TIME – সময় বিন্যাস পরিবর্তন
setlocale(LC_TIME, "de_DE.UTF-8"); // জার্মান সময় বিন্যাস
LC_MONETARY – মুদ্রা বিন্যাস পরিবর্তন
setlocale(LC_MONETARY, "ja_JP.UTF-8"); // জাপানিজ মুদ্রা বিন্যাস
LC_ALL – সব ক্যাটেগরি পরিবর্তন
setlocale(LC_ALL, "es_ES.UTF-8"); // স্প্যানিশ লোকেল
locale.h
এর ব্যবহারিক গুরুত্বlocale.h
ব্যবহার করে প্রোগ্রামটি বিভিন্ন ভাষা ও সংস্কৃতির জন্য উপযোগী করা যায়।ফাংশন | কাজ |
---|---|
setlocale() | নির্দিষ্ট ক্যাটেগরির জন্য লোকেল সেট করে |
localeconv() | লোকেল কনভেনশন পেতে ব্যবহৃত হয় |
locale.h
হেডার ফাইলটি ব্যবহার করে প্রোগ্রামকে বিভিন্ন ভাষা ও সংস্কৃতির উপযোগী করা সহজ হয়। এর মাধ্যমে প্রোগ্রামটি ব্যবহারকারীর স্থানীয় সেটিংস অনুযায়ী ডেটা প্রদর্শন করতে পারে।
setlocale()
ফাংশনের মাধ্যমে Locale সেট করাসি প্রোগ্রামিং ভাষায়, setlocale()
ফাংশনটি locale সেট করার জন্য ব্যবহৃত হয়। Locale একটি সেটিং যা ভাষা, দেশ, সংস্কৃতি এবং অঞ্চলের নির্দিষ্ট বৈশিষ্ট্য সম্পর্কিত ফরম্যাট, যেমন ডেট এবং সময়ের ফরম্যাট, সংখ্যা ফরম্যাট, এবং মুদ্রার চিহ্ন নির্ধারণ করে।
setlocale()
ফাংশনটি সাধারণত স্ট্রিং হ্যান্ডলিং, ডেট/টাইম ফরম্যাটিং, এবং দেশভিত্তিক ফর্ম্যাটিং পরিবর্তন করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, এটি সংখ্যার দশমিক বিভাজক এবং কমা বিভাজক পরিবর্তন করতে পারে, বা ফাইল নাম্বারিং সিস্টেম পরিবর্তন করতে পারে।
#include <locale.h>
char *setlocale(int category, const char *locale);
category
: লোকেল ক্যাটেগরি নির্ধারণ করে, যা কি পরিবর্তন করতে চান তা নির্ধারণ করে।LC_ALL
: সমস্ত সিস্টেম সেটিংস।LC_COLLATE
: সোর্টিং অর্ডার।LC_CTYPE
: ক্যারেক্টার শ্রেণীবিন্যাস।LC_MONETARY
: মুদ্রা সম্পর্কিত সেটিংস।LC_NUMERIC
: সংখ্যার ফরম্যাটিং।LC_TIME
: তারিখ এবং সময়ের ফরম্যাটিং।LC_MESSAGES
: বার্তা ফরম্যাটিং।locale
: লোকেল সিস্টেমের নাম, যেমন "en_US.UTF-8"
, "fr_FR"
, "de_DE"
ইত্যাদি।যদি locale
প্যারামিটারটি """
বা "C"
হয়, তাহলে এটি ডিফল্ট লোকেল সেটিংসে ফিরে যাবে।
#include <stdio.h>
#include <locale.h>
int main() {
// লোকেল সেট করা সমস্ত ক্যাটেগরি সহ
setlocale(LC_ALL, "en_US.UTF-8");
printf("Locale set to: %s\n", setlocale(LC_ALL, NULL));
return 0;
}
এখানে, setlocale(LC_ALL, "en_US.UTF-8")
ফাংশনটি সমস্ত ক্যাটেগরি "en_US.UTF-8" লোকেল সেট করতে ব্যবহার করা হয়েছে।
#include <stdio.h>
#include <locale.h>
int main() {
// শুধুমাত্র LC_NUMERIC ক্যাটেগরি সেট করা
setlocale(LC_NUMERIC, "en_US.UTF-8");
// সংখ্যা ফরম্যাট পরিবর্তন হবে
printf("Current locale for numeric formatting: %s\n", setlocale(LC_NUMERIC, NULL));
return 0;
}
এখানে, setlocale(LC_NUMERIC, "en_US.UTF-8")
শুধুমাত্র সংখ্যা ফরম্যাটিংয়ের জন্য লোকেল সেট করা হয়েছে।
LC_TIME
ক্যাটেগরি দিয়ে তারিখ ও সময় ফরম্যাট পরিবর্তন#include <stdio.h>
#include <locale.h>
int main() {
// LC_TIME ক্যাটেগরি সেট করা
setlocale(LC_TIME, "de_DE.UTF-8"); // জার্মান লোকেল
// সিস্টেমের তারিখ এবং সময় ফরম্যাটের আউটপুট
printf("Current locale for time: %s\n", setlocale(LC_TIME, NULL));
return 0;
}
এখানে setlocale(LC_TIME, "de_DE.UTF-8")
ফাংশনটি তারিখ এবং সময়ের জন্য জার্মান লোকেল সেট করে।
setlocale()
ফাংশনটি:NULL
প্যারামিটার দিলে লোকেল সেটিংস জানতে পারবেন।setlocale()
এর প্যারামিটার ব্যাখ্যা:category
: আপনি যে বিভাগটি পরিবর্তন করতে চান, সেটি নির্ধারণ করবে।locale
: স্ট্রিং যা লোকেল সেটিংস নির্ধারণ করে। "C"
বা ""
ব্যবহার করলে ডিফল্ট লোকেল ফিরে যাবে।setlocale()
ফাংশনটি সিস্টেমের লোকেল সেটিংস পরিবর্তন করতে ব্যবহৃত হয়, যা বিভিন্ন ভাষার, সময়ের এবং সংখ্যা সম্পর্কিত ফরম্যাটিং কাস্টমাইজ করার জন্য ব্যবহৃত হয়। এটি অ্যাপ্লিকেশনকে অঞ্চলভিত্তিক বৈশিষ্ট্যগুলির সাথে সামঞ্জস্যপূর্ণ করে তোলে।
ফাংশন | কাজ | সিঙ্কট্যাক্স |
---|---|---|
setlocale() | লোকেল সেটিংস পরিবর্তন এবং প্রাপ্ত করা | char *setlocale(int category, const char *locale); |
এটি locale নির্ধারণের জন্য একটি শক্তিশালী এবং কার্যকরী উপায়, বিশেষ করে আন্তর্জাতিকাইজেশন এবং স্থানীয়করণ (i18n ও l10n) কাজের জন্য।
Locale-based data formatting হচ্ছে এমন একটি পদ্ধতি যার মাধ্যমে প্রোগ্রামটি ব্যবহৃত অঞ্চলের ভাষা, মুদ্রা, সময়, সংখ্যা এবং তারিখের ফরম্যাট অনুযায়ী আউটপুট প্রদান করে। এটি একটি গুরুত্বপূর্ণ ধারণা যেহেতু বিভিন্ন দেশের মধ্যে সময়, তারিখ, সংখ্যা, এবং মুদ্রার আকারের মধ্যে পার্থক্য থাকে। উদাহরণস্বরূপ, ইউরোপে একটি সংখ্যাকে 1,000.50
হিসাবে লেখা হয়, কিন্তু আমেরিকাতে
সেটি 1.000,50
হতে পারে।
locale
একটি সেটিংস যা একটি প্রোগ্রামকে তার ব্যবহৃত অঞ্চলের জন্য নির্দিষ্ট কাস্টমাইজড আচরণ নির্ধারণ করতে সহায়ক হয়। locale
এ নির্দিষ্ট তথ্যের মধ্যে অন্তর্ভুক্ত হতে পারে:
সি প্রোগ্রামিং ভাষায়, locale.h
হেডার ফাইলটি locale সম্পর্কিত ফাংশন সরবরাহ করে, যা প্রোগ্রামটি নির্দিষ্ট অঞ্চলের তথ্য অনুসারে আউটপুট ফরম্যাট করে। এই ফাংশনগুলির মধ্যে গুরুত্বপূর্ণ ফাংশন হচ্ছে:
setlocale()
localeconv()
printf()
এবং scanf()
এর মাধ্যমে লোকাল বেসড ফরম্যাটিংsetlocale()
ফাংশনsetlocale()
ফাংশনটি প্রোগ্রামের locale সেট করার জন্য ব্যবহৃত হয়। এটি সাধারণত প্রাথমিকভাবে কল করা হয় যাতে পরবর্তী ফাংশনগুলির জন্য সঠিক locale সেট থাকে।
#include <locale.h>
char *setlocale(int category, const char *locale);
category
: এটি সেটিংয়ের ধরন নির্ধারণ করে, যেমন:LC_ALL
: সব ধরনের সেটিং (ভাষা, সময়, সংখ্যা, ইত্যাদি)LC_TIME
: সময় এবং তারিখের ফরম্যাটLC_NUMERIC
: সংখ্যার ফরম্যাটLC_MONETARY
: মুদ্রার ফরম্যাটLC_CTYPE
: অক্ষর সেটিংlocale
: এটি একটি স্ট্রিং যা নির্দিষ্ট অঞ্চলের নাম প্রদান করে (যেমন "en_US.UTF-8"
, "fr_FR.UTF-8"
)।setlocale()
ব্যবহার#include <stdio.h>
#include <locale.h>
int main() {
// প্রোগ্রামটি সকল অঞ্চলের সেটিং সিলেক্ট করে
setlocale(LC_ALL, "");
// লোকালাইজড আউটপুট
printf("This is a test: %f\n", 1234567.89);
return 0;
}
এখানে, setlocale(LC_ALL, "")
সেটিংটিকে সিস্টেমের লোকাল অনুসারে কনফিগার করে, যেমন ইউরোপ, মার্কিন যুক্তরাষ্ট্র, ভারত, ইত্যাদি।
localeconv()
ফাংশনlocaleconv()
ফাংশনটি লোকালাইজড নম্বর ফরম্যাটিং সংক্রান্ত তথ্য প্রদান করে, যেমন: হাজারের সেপারেটর, দশমিক চিহ্ন, মুদ্রা চিহ্ন ইত্যাদি।
#include <locale.h>
struct lconv *localeconv(void);
এই ফাংশনটি একটি struct lconv
রিটার্ন করে যা বিভিন্ন প্রোপার্টি ধারণ করে:
decimal_point
: দশমিক চিহ্নthousands_sep
: হাজারের সেপারেটরcurrency_symbol
: মুদ্রা চিহ্নmon_grouping
: মুদ্রার গ্রুপিংlocaleconv()
ব্যবহার#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_NUMERIC, "en_US.UTF-8"); // সেট locale ইউএসএ
struct lconv *loc = localeconv();
printf("Decimal point: %s\n", loc->decimal_point);
printf("Thousands separator: %s\n", loc->thousands_sep);
return 0;
}
এখানে localeconv()
ফাংশনটি লোকাল ফরম্যাটিং সম্পর্কিত তথ্য প্রদান করে, যা decimal_point
এবং thousands_sep
প্রপার্টির মাধ্যমে দশমিক চিহ্ন এবং হাজারের সেপারেটরের মান বের করে।
printf()
এবং scanf()
লোকাল ফরম্যাটিংযখন setlocale()
ব্যবহার করে লোকাল সেট করা হয়, তখন printf()
এবং scanf()
ফাংশনগুলিও লোকালাইজড আউটপুট বা ইনপুট ফরম্যাটিং অনুসরণ করে। উদাহরণস্বরূপ, printf()
ফাংশনে মুদ্রা চিহ্ন এবং স্থানীয় সংখ্যা ফরম্যাট প্রদর্শন করতে localeconv()
ব্যবহার করা যেতে পারে।
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_NUMERIC, "de_DE.UTF-8"); // জার্মান লোকাল
// জার্মান লোকাল অনুযায়ী আউটপুট
printf("Formatted number: %'.2f\n", 1234567.89);
return 0;
}
এখানে, %'.2f
ফরম্যাট স্পেসিফায়ারটি লোকাল অনুযায়ী হাজারের সেপারেটর (যেমন কমা বা স্পেস) এবং দশমিক সঠিকতা ব্যবহার করবে।
localeconv()
ফাংশনের মাধ্যমে মুদ্রা সম্পর্কিত তথ্যও পাওয়া যায়, যেমন মুদ্রা চিহ্ন, মুদ্রার আকার ইত্যাদি।
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_MONETARY, "en_US.UTF-8");
struct lconv *loc = localeconv();
printf("Currency symbol: %s\n", loc->currency_symbol);
return 0;
}
এখানে, localeconv()
এর মাধ্যমে ইউএস লোকাল অনুযায়ী মুদ্রার চিহ্ন প্রদর্শন করা হয়েছে।
setlocale()
ফাংশনটি বিভিন্ন অঞ্চলের locale সেট করতে ব্যবহৃত হয়, যা তারিখ, সময়, মুদ্রা, সংখ্যা এবং ভাষা ফরম্যাটিং নির্ধারণ করে।localeconv()
ফাংশনটি লোকাল সম্পর্কিত বিভিন্ন তথ্য যেমন হাজারের সেপারেটর, দশমিক চিহ্ন, মুদ্রা চিহ্ন প্রদান করে।printf()
এবং scanf()
ফাংশনগুলি লোকালাইজড আউটপুট এবং ইনপুট প্রদান করতে setlocale()
এবং localeconv()
এর সাথে কাজ করতে পারে।Localization (লোকালাইজেশন) হলো এমন একটি প্রক্রিয়া যা একটি অ্যাপ্লিকেশন বা সফটওয়্যারকে বিভিন্ন ভাষায় এবং অঞ্চলগত বৈশিষ্ট্য অনুযায়ী কাস্টমাইজ বা অভিযোজিত করে। মূলত, multilingual applications বা বহুভাষিক অ্যাপ্লিকেশন তৈরি করার সময়, সফটওয়্যারটির ভাষা, সংস্কৃতি এবং স্থানীয় চাহিদা অনুযায়ী অপারেশন এবং প্রদর্শন পরিবর্তন করতে হয়। এটি একটি বিশ্বব্যাপী ব্যবহারকারী বেসের জন্য অ্যাপ্লিকেশনটি উপযুক্ত করে তোলে।
Localization বা লোকালাইজেশন এমনভাবে করা হয় যাতে অ্যাপ্লিকেশনটি বিভিন্ন ভাষা, সাইট, সংস্কৃতি, মুদ্রা, সময় অঞ্চল ইত্যাদির সঙ্গে সামঞ্জস্যপূর্ণ হতে পারে। এখানে কিছু গুরুত্বপূর্ণ লোকালাইজেশন কৌশল এবং তাদের প্রয়োগ আলোচনা করা হলো:
ইন্টারন্যাশনালাইজেশন (i18n) হলো লোকালাইজেশনের পূর্ববর্তী ধাপ, যেখানে অ্যাপ্লিকেশনটি বিভিন্ন ভাষা এবং অঞ্চলের জন্য প্রস্তুত করা হয়। ইন্টারন্যাশনালাইজেশন নিশ্চিত করে যে অ্যাপ্লিকেশনটি সহজেই অন্যান্য ভাষা বা অঞ্চলে স্থানীয়ভাবে অভিযোজিত হতে পারে।
.properties
, .xml
, .json
বা .po
ফাইলগুলি ব্যবহার করা।একটি অ্যাপ্লিকেশনে বহুভাষিক সমর্থন দেওয়ার জন্য, সমস্ত ভাষার জন্য আলাদা রিসোর্স ফাইল তৈরি করা হয়। প্রতিটি ভাষার জন্য একটি রিসোর্স ফাইল থাকবে, যেখানে স্থানীয় ভাষায় বার্তা, লেবেল, বাটন টেক্সট ইত্যাদি থাকবে।
resource
ফাইলে রাখা। প্রতিটি ভাষার জন্য আলাদা ফাইল তৈরি করা হয়, যেমন messages_en.properties
, messages_fr.properties
ইত্যাদি।messages_en.properties
ফাইলটি লোড করবে এবং একটি ফরাসি অ্যাপ্লিকেশন messages_fr.properties
ফাইলটি লোড করবে।# English messages
button.ok=OK
message.welcome=Welcome to our application!
# French messages
button.ok=OK
message.welcome=Bienvenue dans notre application!
অ্যাপ্লিকেশনটি ব্যবহারকারীর ভাষা স্বয়ংক্রিয়ভাবে সনাক্ত করতে পারে, যেমন ব্রাউজারের ভাষা সেটিংস অথবা IP Geolocation থেকে অঞ্চলের ভাষা সনাক্ত করা। এটি ব্যবহারকারীর স্থানীয় ভাষায় অ্যাপ্লিকেশন প্রদর্শন করে।
লোকালাইজেশন শুধুমাত্র ভাষা নয়, বরং সংস্কৃতি এবং স্থানীয় রীতি অনুযায়ী সামঞ্জস্যপূর্ণ হওয়া উচিত। কিছু ভিজ্যুয়াল উপাদান, রঙ, ছবি, বা বার্তা বিভিন্ন সংস্কৃতির জন্য ভিন্ন অর্থ বহন করতে পারে, তাই এগুলি সঠিকভাবে কাস্টমাইজ করা জরুরি।
অ্যাপ্লিকেশনটি ব্যবহারকারীর স্থানীয় মুদ্রা, সময় অঞ্চল, এবং অন্যান্য স্থানীয় প্রথা অনুযায়ী আউটপুট প্রদর্শন করবে।
$
), ইউরো (€
), পাউন্ড (£
) ইত্যাদি স্বয়ংক্রিয়ভাবে প্রদর্শন হবে।ভাষাগত পরিবর্তন অনুযায়ী UI উপাদানগুলো স্কেল এবং পুনঃঅভিযোজন করা উচিত। একটি ভাষা থেকে অন্য ভাষায় স্থানান্তর করার সময়, এক ভাষার জন্য উপযুক্ত লেআউট অন্য ভাষায় কাজ নাও করতে পারে, কারণ ভাষাগুলির দৈর্ঘ্য ভিন্ন হতে পারে।
বহুভাষিক অ্যাপ্লিকেশন তৈরি করতে সাহায্য করার জন্য বিভিন্ন প্রোগ্রামিং ফ্রেমওয়ার্ক এবং টুলস রয়েছে:
বহুভাষিক অ্যাপ্লিকেশন তৈরি করার সময় এই কৌশলগুলো ব্যবহার করলে অ্যাপ
্লিকেশনটি বিশ্বের বিভিন্ন অঞ্চলের জন্য উপযুক্ত হয়ে ওঠে এবং এর ব্যবহারকারীদের জন্য একটি সুষ্ঠু এবং কার্যকরী অভিজ্ঞতা প্রদান করে।
common.read_more